#include <memory>
#include <iostream>

class MyClass {
    int value;
    friend class FriendClass; // 声明FriendClass为友元类
    MyClass(int val) : value(val) {} // 私有构造函数

public:
    static std::unique_ptr<MyClass> createInstance(int val) {
        return std::unique_ptr<MyClass>(new MyClass(val));
    }

    void printValue() const {
        std::cout << "Value: " << value << std::endl;
    }
};

class FriendClass {
public:
    std::unique_ptr<MyClass> createMyClassInstance(int val) {
        // 使用MyClass内部提供的公共静态成员函数来创建实例
        return MyClass::createInstance(val);
    }
};

int main() {
    FriendClass friendClass;
    auto myClassInstance = friendClass.createMyClassInstance(1127);
    myClassInstance->printValue(); // 输出: Value: 1127

    return 0;
}